package com.vehiclemanagement.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import com.vehiclemanagement.dto.UserDTO;
import com.vehiclemanagement.entity.User;

/**
 * 用户服务接口
 */
public interface UserService extends IService<User> {

    /**
     * 用户登录
     *
     * @param username 用户名
     * @param password 密码
     * @return JWT token
     */
    String login(String username, String password);

    /**
     * 用户注册
     *
     * @param userDTO 用户信息
     * @return 是否成功
     */
    boolean register(UserDTO userDTO);

    /**
     * 修改用户信息
     *
     * @param userDTO 用户信息
     * @return 是否成功
     */
    boolean updateUserInfo(UserDTO userDTO);

    /**
     * 根据ID获取用户信息
     *
     * @param id 用户ID
     * @return 用户信息
     */
    User getUserById(Long id);

    /**
     * 根据用户名获取用户信息
     *
     * @param username 用户名
     * @return 用户信息
     */
    User getUserByUsername(String username);

    /**
     * 分页查询用户列表
     *
     * @param current 当前页
     * @param size 每页大小
     * @param searchTerm 搜索关键词
     * @param role 角色
     * @param status 状态
     * @return 分页用户列表
     */
    IPage<User> pageUsers(Integer current, Integer size, String searchTerm, Integer role, Integer status);

    /**
     * 修改用户状态
     *
     * @param id 用户ID
     * @param status 状态
     * @return 是否成功
     */
    boolean updateUserStatus(Long id, Integer status);

    /**
     * 重置用户密码
     *
     * @param id 用户ID
     * @param newPassword 新密码
     * @return 是否成功
     */
    boolean resetPassword(Long id, String newPassword);

    /**
     * 删除用户
     *
     * @param id 用户ID
     * @return 是否成功
     */
    boolean deleteUser(Long id);
} 